#ifndef HTTP_CONN_H
#define HTTP_CONN_H

#include <atomic>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/uio.h>
#include <stdio.h>
#include <string>
#include <unistd.h>

class HttpConn {
public:
    HttpConn();
    ~HttpConn();

    int GetFd() const;

    void Close();

    int Read(int *readerrno);

    int Write(int *writeerrno);

    bool Process();

    bool ToWriteBytes(); // 是否还有待写的数据,true为写完

    bool IsKeepAlive();

    void Init(int fd, const sockaddr_in& addr);

public:
    static bool isET;
    static const char* srcDir;
    static std::atomic<int> userCount; // 最大用户数，atomic使用硬件级别的原子操作，一般比互斥量效率更高
private:
    int m_fd;
    char* buf1;
    char* buf2;
    char* writebuff;
};


#endif